Docker日志解决方案(rsyslog+logstash) · robin Lee

您所在的位置:网站首页 docker 上网日志服务器 Docker日志解决方案(rsyslog+logstash) · robin Lee

Docker日志解决方案(rsyslog+logstash) · robin Lee

2023-04-26 00:22| 来源: 网络整理| 查看: 265

Docker日志解决方案(rsyslog+logstash) 05 Jan 2017 测试环境 Host OS IP Services syslog服务器 Ubuntu16.04 192.168.3.48 rsyslog,logstash docker服务器 Ubuntu16.04 192.168.3.45 nginx

docker服务器启动nginx容器,nginx容器日志通过syslog传到syslog服务器,syslog服务器把日志输出到logstash中。

Syslog日志服务器配置

修改rsyslog配置文件/etc/rsyslog.conf,取消TCP或者UDP日志接收模块注释,下图开启TCP514端口接收日志

[email protected]:~# vi /etc/rsyslog.conf

创建日志转发模板文件/etc/rsyslog.d/01-template-json.conf,使用json格式进行日志转发

[email protected]:~# touch /etc/rsyslog.d/01-template-json.conf

输入以下文件内容吗,定义syslog的json模板及各个字段,更多字段内容

template(name="json-template" type="list") { constant(value="{") constant(value="\"@timestamp\":\"") property(name="timereported" dateFormat="rfc3339") constant(value="\",\"@version\":\"1") constant(value="\",\"message\":\"") property(name="msg" format="json") constant(value="\",\"sysloghost\":\"") property(name="hostname") constant(value="\",\"severity\":\"") property(name="syslogseverity-text") constant(value="\",\"facility\":\"") property(name="syslogfacility-text") constant(value="\",\"programname\":\"") property(name="programname") constant(value="\",\"procid\":\"") property(name="procid") constant(value="\"}\n") }

创建日志转发配置文件/etc/rsyslog.d/60-output.conf

[email protected]:~# touch /etc/rsyslog.d/60-output.conf

输入以下内容,定义所有日志使用json-template模板转发到192.168.3.48:10514,2个@@表示TCP端口,1个@表示UDP端口

# This line sends all lines to defined IP address at port 10514, # using the "json-template" format template *.* @@192.168.3.48:10514;json-template

重启rsyslog服务

[email protected]:~# /etc/init.d/rsyslog restart

Docker服务器配置syslog驱动

为docker daemon配置syslog驱动,并设置远程syslog日志服务器地址和端口接收日志

[email protected]:~# dockerd start --log-driver=syslog \ --log-opt syslog-address=tcp://192.168.3.48:514 &

或者启动容器时配置syslog中心服务器记录日志(不建议使用该方式)

[email protected]:~# docker run --log-driver=syslog \ --log-opt syslog-address=tcp://192.168.3.48:514

启动nginx容器,访问nginx容器

[email protected]:~# docker run -it --rm -p 80:80 nginx [email protected]:~# curl 192.168.3.45

查看容器,输出了nginx访问日志

查看syslog服务器日志,确定接收到nginx容器日志

[email protected]:~# cat /var/log/syslog

logstash配置(容器方式)

logstash容器运行在syslog服务器上,下载logstash镜像,创建logstash配置文件

[email protected]:~# docker pull logstash [email protected]:~# cd ~ [email protected]:~# mkdir logstash_pipeline [email protected]:~# vi logstash_pipeline/logstash.conf

定义logstash输入输出与过滤条件,输入从tcp10514端口接受日志数据(也可以直接读取syslog采集,但需要对syslog文件有读权限),直接输出到标准输出,更多配置参考

input { tcp { port => 10514 codec => "json" type => "rsyslog" } # file { # path => "/logs/syslog" # start_position => "beginning" # } # stdin { } } filter { } output { stdout { } }

启动logstash容器,接收syslog日志

[email protected]:~# docker run -it --rm -p 192.168.3.48:10514:10514 -v ~/logstash_pipeline/:/logstash_pipeline logstash -f /logstash_pipeline/logstash.conf

查看logstash容器输出,成功接收到syslog日志。数据流向nginx容器-->syslog服务器-->logstash容器



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3